-- ToME - Tales of Maj'Eyal
-- Copyright (C) 2009, 2010, 2011, 2012 Nicolas Casalini
--
-- This program is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation, either version 3 of the License, or
-- (at your option) any later version.
--
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-- GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with this program.  If not, see <http://www.gnu.org/licenses/>.
--
-- Nicolas Casalini "DarkGod"
-- darkgod@te4.org

local default_eyal_descriptors = function(add)
	local base = {

	race =
	{
		__ALL__ = "disallow",
		Human = "allow",
		Elf = "allow",
		Dwarf = "allow",
		Halfling = "allow",
		Yeek = "allow",
		Undead = "allow",
		Construct = "allow",
	},

	class =
	{
		__ALL__ = "disallow",
		Psionic = "allow",
		Warrior = "allow",
		Archer = "allow",
		Rogue = "allow",
		Mage = "allow",
		Celestial = "allow",
		Wilder = "allow",
		Defiler = "allow",
		Afflicted = "allow",
		Chronomancer = "allow",
		Psionic = "allow",
		Adventurer = "allow",
	},
	subclass =
	{
		-- Nobody should be a sun paladin & anorithil but humans & elves
		['Sun Paladin'] = "nolore",
		Anorithil = "nolore",
		-- Nobody should be an archmage but human, elves, halflings and undeads
		Archmage = "nolore",
	},
}
	if add then table.merge(base, add) end
	return base
end

-- Player worlds/campaigns
newBirthDescriptor{
	type = "world",
	name = "Maj'Eyal",
	display_name = "Мадж-Эйял: Эпоха восхождения",
	desc =
	{
		"В Мадж-Эйяле живут люди, полурослики, эльфы и гномы.",
		"В этом мире уже более ста лет не было войн и люди там живут богато и счастливо.",
		"Ты - авантюрист, путешествующий в поисках сокровищ и славы.",
		"Но что скрывают тени этого мира?",
	},
	descriptor_choices = default_eyal_descriptors{},
	game_state = {
		campaign_name = "maj-eyal",
		__allow_rod_recall = true,
		__allow_transmo_chest = true,
	},
}

newBirthDescriptor{
	type = "world",
	name = "Infinite",
	display_name = "Бесконечное подземелье: Непрерывный десант",
	locked = function() return profile.mod.allow_build.campaign_infinite_dungeon end,
	locked_desc = "Спуск вниз, глубже и глубже, без конца, без остановки. В древних руинах ты решил загадку и прошёл сквозь запертые врата, чтобы найти свою судьбу.",
	desc =
	{
		"Играя за свою любимую расу и класс рискни отправиться в Бесконечное подземелье.",
		"Расстояние, которое ты пройдёшь, зависит только от твоих способностей!",
		"В Бесконечном подземелье на тебя не действуют никакие ограничения. Ты сможешь поднять уровень персонажа больше 50 и продолжать получать очки характеристик и навыков.",
		"За каждый уровень сверх пятидесятого максимум твоих характеристик увеличивается на 1.",
		"За каждый десятый уровень сверх пятидесятого максимум каждого из твоих навыков увеличивается на 1.",
	},
	descriptor_choices = default_eyal_descriptors{ difficulty = { Tutorial = "never"} },
	copy = {
		-- Can levelup forever
		resolvers.generic(function(e) e.max_level = nil end),
		no_points_on_levelup = function(self)
			if self.level <= 50 then
				self.unused_stats = self.unused_stats + (self.stats_per_level or 3) + self:getRankStatAdjust()
				self.unused_talents = self.unused_talents + 1
				self.unused_generics = self.unused_generics + 1
				if self.level % 5 == 0 then self.unused_talents = self.unused_talents + 1 end
				if self.level % 5 == 0 then self.unused_generics = self.unused_generics - 1 end
				if self.level == 10 or self.level == 20 or self.level == 36 or self.level == 46 then
					self.unused_talents_types = self.unused_talents_types + 1
				end
				if self.level == 30 or self.level == 42 then
					self.unused_prodigies = self.unused_prodigies + 1
				end
				if self.level == 50 then
					self.unused_stats = self.unused_stats + 10
					self.unused_talents = self.unused_talents + 3
					self.unused_generics = self.unused_generics + 3
				end
			else
				self.unused_stats = self.unused_stats + 1
				if self.level % 2 == 0 then
					self.unused_talents = self.unused_talents + 1
				elseif self.level % 3 == 0 then
					self.unused_generics = self.unused_generics + 1
				end
			end
		end,

		resolvers.equip{ id=true, {name="iron pickaxe", ego_chance=-1000}},
		-- Override normal stuff
		before_starting_zone = function(self)
			self.starting_level = 1
			self.starting_level_force_down = nil
			self.starting_zone = "infinite-dungeon"
			self.starting_quest = "infinite-dungeon"
			self.starting_intro = "infinite-dungeon"
		end,
	},
	game_state = {
		campaign_name = "infinite-dungeon",
		__allow_transmo_chest = true,
		is_infinite_dungeon = true,
		ignore_prodigies_special_reqs = true,
	},
}

newBirthDescriptor{
	type = "world",
	name = "Arena",
	display_name = "Арена: Вызов Чемпиону",
	locked = function() return profile.mod.allow_build.campaign_arena end,
	locked_desc = "Кровь течёт на песок, выживет лишь сильнейший. Докажи себе, что достоен победы.",
	desc =
	{
		"Сыграй за одинокого воина, бросившего вызов на Арене!",
		"Ты можешь выбрать любой класс и расу.",
		"Посмотрим, как долго ты продержишься! Сможешь ли ты победить Чемпиона Арены?",
		"Если сможешь, в следующий раз будешь сражаться со своим собственным чемпионом!",
	},
	descriptor_choices = default_eyal_descriptors{ difficulty = { Tutorial = "never" }, permadeath = { Exploration = "never", Adventure = "never" } },
	copy = {
		death_dialog = "ArenaFinish",
		-- Override normal stuff
		before_starting_zone = function(self)
			self.starting_level = 1
			self.starting_level_force_down = nil
			self.starting_zone = "arena"
			self.starting_quest = "arena"
			self.starting_intro = "arena"
		end,
	},
	game_state = {
		campaign_name = "arena",
		is_arena = true,
		ignore_prodigies_special_reqs = true,
	},
}

